iT邦幫忙

2024 iThome 鐵人賽

DAY 23
0

今日的行程:
辦公室:10:00 - 19:30
讀書室:21:30 - 23:30

正片開始

Exception handling 是系統,或說 CPU,在執行到某些指令,或在某些特殊狀態下,需要做特殊處理的過程。這個章節介紹了整個 exception handling 所需要的知識。

基本概念

Exception type

  • Synchronous
    • Instruction / Data abort (exception)
      • unaligned $SP
      • page fault
      • ...
    • Reset
    • System call (svc, hvc, smc)
  • Asynchronous
    • Interrupt (下一章介紹 interrupt controller)

Exception Level

  • EL0: user space program
  • EL1: supervisor (OS)
  • EL2: hypervisor
  • EL3: secure monitor

Exception handling

  • Entry
    • CPU 會保證以下事情
      • save PSTATE to SPSR_Elx
      • save return address to ELR_ELx
      • set D A I F to 1 ==> Disable debug exception, SError, IRQ & FIQ
      • save exception cause to ESR_ELx
      • switch SP to SP_ELx or SP_EL0
      • switch EL to corresponding ELx
    • 軟體則需要把當下的狀態 (context) 儲存到 stack 上
      • PSTATE
      • PC
      • SP
      • X0-X30
  • Exception handling
    • 解析 ESR_ELx 來判斷要做什麼樣的 exception handling 過程
  • Return
    • CPU 會保證以下事情
      • resotre PC from ELR_ELx
      • restore PSTATE (這也會把中斷打開)
    • 軟體則是把原本的執行狀態回復回來 (存在 stack 上的東西)
    • ERET

Exception vector table

是用來加速 exception handling 過程的機制,當 exception 發生的時候,可以直接跳到 exception vector entry 執行,不需要透過統一的入口再做 dispatch;不同的 EL,不同的執行狀態,會對應到不同的 exception vector entry,詳見 arch/arm64/kernel/entry.S

結論

RISC-V 有著相似的 exception handling 過程

  • 分三個 mode: M、S、U,類似於 EL0-3
  • 有 [m|s]tvec 對應 VBAR_ELx
    • [m|s]tvec 有個 mode,可以用來決定要是 direct access 還是 vector access
  • 有 [m|s]cause 來對應 ESR_ELx,Andes CPU 則還有客製化的 [m|s]dcause 可以知道 detailed cause
  • 硬體也會幫忙關中斷 (save MIE to MPIE, disable mstatus.MIE)
  • 不過 ARM64 各個 EL 有自己的 SP_ELx,RISC-V 則是只有一個 SP,可以說 ARM64 是對軟體設計友善,但是需要較多硬體資源;而 RISC-V 則是 uarch 設計可以簡潔些,只不過軟體設計上需要多一些考慮。
  • 還有不同的地方是 delegation 機制

上一篇
[鐵人賽] Day 22 ARM 第 10 章節 Inline Assembly
下一篇
[鐵人賽] Day 24 ARM 第 12 章節 Interrupt Handling
系列文
上班辦公室,下班讀書室:RISC-V / ARM64 體系結構編程與實踐30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言